[colors]
background = #282A2E
background-alt = #373B41
foreground = #C5C8C6
primary = #F0C674
secondary = #8ABEB7
alert = #A54242
disabled = #707880

[bar/example]
width = 100%
; NOTE: ipatch, dpi dependent
height = 14pt 
radius = 6

; dpi = 96
; NOTE: ipatch, internal macbook retina hidpi display
; https://dpi.lv/
dpi = 221

background = ${colors.background}
foreground = ${colors.foreground}

line-size = 3pt

border-size = 4pt
border-color = #00000000

padding-left = 1
padding-right = 1

module-margin = 1

separator = |
separator-foreground = ${colors.disabled}

; NOTE: below font blows up pause button
; font-3 = NotoColorEmoji

; NOTE: ipatch, spotify control module
; https://github.com/mihirlad55/polybar-spotify-module
;-
; NOTE: ipatch, if the polybar controls do not appear, close spotify, relaunch and cross fingers 🤞

modules-left = xworkspaces
; modules-left = xworkspaces xwindow
; modules-center = spotify previous playpause next
modules-center = previous next playpause spotify
; modules-right = previous playpause next spotify filesystem pulseaudio xkeyboard memory cpu eth date
; modules-right = filesystem pulseaudio xkeyboard memory cpu eth date
modules-right = battery filesystem pulseaudio xkeyboard memory cpu date system-tray

cursor-click = pointer
cursor-scroll = ns-resize

enable-ipc = true

tray-position = right
; Tray icon max size
tray-maxsize = 40

; wm-restack = generic
; wm-restack = bspwm
; wm-restack = i3

; override-redirect = true

; font-0 = monospace;2
; font = pango:DejaVu Sans Mono:size=44
font-0 = DejaVuSansCondensed:size=9
font-1 = Source Code Pro:size=9
; font-2 = Font Awesome 6 Free:size=9
font-2 = Font Awesome 6 Brands:size=28;5
font-3 = SourceCodePro+Powerline+Awesome Regular
font-4 = BlexMono Nerd Font
font-5 = BlexMono Nerd Font Mono
font-6 = Font Awesome 6 Free,Font Awesome 6 Free Solid
font-7 = Font Awesome 6 Free,Font Awesome 6 Free Solid:style=Solid
font-8 = BlexMono Nerd Font Mono:style=Regular
font-9 = Font Awesome 6 Free Solid:size=28;5

;-------------------------------------
; modules / styles / icons / i3
;-------------------------------------

# the value format is <name-of-i3-workspace>;<icon>
# just replace icon1 and icon2, etc. with your preferred Unicode symbol
; ws-icon-0 = 1;
; ws-icon-1 = 2;
; ws-icon-2 = 3;
;
;
; label-focused = %icon%
; label-unfocused = %icon%
; label-visible = %icon%

;-------------------------------------
; modules / cpu / temp
;-------------------------------------
# NOTE: ipatch, add cpu temp, req `lm_sensors` #arch, `hwmon/hwmon[?]/` may vary
# NOTE: the `path` var below accepts `?` for varying names, ...vary cool!
# TODO: ipatch, craft cmd to grab the current cpu temp
[module/cpu-temp]
  type = custom/script
  exec = ~/.dotfiles/bin/get-cpu-temp
  interval = 1
  format = <label>
  ; format-background = #999
  format-foreground = ${colors.cyan}
	format-underline = ${colors.cyan}
  format-margin = 2
  label =    %output%

;-------------------------------------
; modules / laptop / battery
;-------------------------------------
[module/battery]
  type = internal/battery

  ; This is useful in case the battery never reports 100% charge
  ; Default: 100
  full-at = 99

  ; format-low once this charge percentage is reached
  ; Default: 10
  ; New in version 3.6.0
  low-at = 5

  ; Use the following command to list batteries and adapters:
  ; $ ls -1 /sys/class/power_supply/
  battery = BAT0
  adapter = ADP1

  ; If an inotify event haven't been reported in this many
  ; seconds, manually poll for new values.
  ;
  ; Needed as a fallback for systems that don't report events
  ; on sysfs/procfs.
  ;
  ; Disable polling by setting the interval to 0.
  ;
  ; Default: 5
  poll-interval = 5

  ; see "man date" for details on how to format the time string
  ; NOTE: if you want to use syntax tags here you need to use %%{...}
  ; Default: %H:%M:%S
  time-format = %H:%M

  ; Available tags:
  ;   <label-charging> (default)
  ;   <bar-capacity>
  ;   <ramp-capacity>
  ;   <animation-charging>
  format-charging = <label-charging>

  ; Available tags:
  ;   <label-discharging> (default)
  ;   <bar-capacity>
  ;   <ramp-capacity>
  ;   <animation-discharging>
  format-discharging = <label-discharging>

  ; Available tags:
  ;   <label-full> (default)
  ;   <bar-capacity>
  ;   <ramp-capacity>
  ;format-full = <ramp-capacity> <label-full>

  ; Format used when battery level drops to low-at
  ; If not defined, format-discharging is used instead.
  ; Available tags:
  ;   <label-low>
  ;   <animation-low>
  ;   <bar-capacity>
  ;   <ramp-capacity>
  ; New in version 3.6.0
  ;format-low = <label-low> <animation-low>

  ; Available tokens:
  ;   %percentage% (default) - is set to 100 if full-at is reached
  ;   %percentage_raw%
  ;   %time%
  ;   %consumption% (shows current charge rate in watts)
  label-charging = ⚡%percentage%%

  ; Available tokens:
  ;   %percentage% (default) - is set to 100 if full-at is reached
  ;   %percentage_raw%
  ;   %time%
  ;   %consumption% (shows current discharge rate in watts)
  label-discharging = %percentage%% %consumption%W

  ; Available tokens:
  ;   %percentage% (default) - is set to 100 if full-at is reached
  ;   %percentage_raw%
  label-full = Fully charged

  ; Available tokens:
  ;   %percentage% (default) - is set to 100 if full-at is reached
  ;   %percentage_raw%
  ;   %time%
  ;   %consumption% (shows current discharge rate in watts)
  ; New in version 3.6.0
  label-low = BATTERY LOW

  ; Only applies if <ramp-capacity> is used
  ramp-capacity-0 = 
  ramp-capacity-1 = 
  ramp-capacity-2 = 
  ramp-capacity-3 = 
  ramp-capacity-4 = 

  ; Only applies if <bar-capacity> is used
  bar-capacity-width = 10

  ; Only applies if <animation-charging> is used
  animation-charging-0 = 
  animation-charging-1 = 
  animation-charging-2 = 
  animation-charging-3 = 
  animation-charging-4 = 
  ; Framerate in milliseconds
  animation-charging-framerate = 750

  ; Only applies if <animation-discharging> is used
  animation-discharging-0 = 
  animation-discharging-1 = 
  animation-discharging-2 = 
  animation-discharging-3 = 
  animation-discharging-4 = 
  ; Framerate in milliseconds
  animation-discharging-framerate = 500

  ; Only applies if <animation-low> is used
  ; New in version 3.6.0
  animation-low-0 = !
  animation-low-1 = 
  animation-low-framerate = 200

  ;-- END BATTERY

[module/xworkspaces]
  type = internal/xworkspaces

  label-active = %name%
  label-active-background = ${colors.background-alt}
  label-active-underline= ${colors.primary}
  label-active-padding = 1

  label-occupied = %name%
  label-occupied-padding = 1

  label-urgent = %name%
  label-urgent-background = ${colors.alert}
  label-urgent-padding = 1

  label-empty = %name%
  label-empty-foreground = ${colors.disabled}
  label-empty-padding = 1

[module/xwindow]
  type = internal/xwindow
  label = %title:0:60:...%

[module/filesystem]
  type = internal/fs
  interval = 25

  mount-0 = /

  label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%%

  label-unmounted = %mountpoint% not mounted
  label-unmounted-foreground = ${colors.disabled}

[module/pulseaudio]
  type = internal/pulseaudio

  format-volume-prefix = "VOL "
  format-volume-prefix-foreground = ${colors.primary}
  format-volume = <label-volume>

  label-volume = %percentage%%

  label-muted = "MUTED"
  label-muted-foreground = ${colors.disabled}

[module/xkeyboard]
  type = internal/xkeyboard
  blacklist-0 = num lock

  label-layout = %layout%
  label-layout-foreground = ${colors.primary}

  label-indicator-padding = 2
  label-indicator-margin = 1
  label-indicator-foreground = ${colors.background}
  label-indicator-background = ${colors.secondary}

[module/memory]
  type = internal/memory
  interval = 2
  format-prefix = "RAM "
  format-prefix-foreground = ${colors.primary}
  label = %percentage_used:2%%

[module/cpu]
  type = internal/cpu
  interval = 2
  format-prefix = "CPU "
  format-prefix-foreground = ${colors.primary}
  label = %percentage:2%%

[network-base]
  type = internal/network
  interval = 5
  format-connected = <label-connected>
  format-disconnected = <label-disconnected>
  label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected

[module/wlan]
  inherit = network-base
  interface-type = wireless
  label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%

[module/eth]
  inherit = network-base
  interface-type = wired
  label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%

[module/date]
  type = internal/date
  interval = 1

  ; date = %H:%M
  date = "%a %b %d %I %M %p"
  ; format = "%a %b %d %-I:%M %p" # output: ie. `Sun Jan 2 14:37 PM`
  ; date-alt = %Y-%m-%d %H:%M:%S

  label = %date%
  label-foreground = ${colors.primary}

[settings]
  screenchange-reload = true
  pseudo-transparency = true

[module/previous]
  type = custom/ipc
  ; source-code-pro
  format-font = 2
  ; Default
  hook-0 = echo "PREV"
  ; When spotify active
  ; hook-1 = echo "PREV"
  hook-1 = echo "⏮"
  ; hook-1 = echo "玲"
  click-left = "spotifyctl -q previous"

[module/next]
  type = custom/ipc
  format-font = 2
  ; Default
  hook-0 = echo "NEXT"
  ; When spotify active
  ; hook-1 = echo "NEXT"
  hook-1 = echo "⏭"
  click-left = "spotifyctl -q next"

[module/playpause]
  type = custom/ipc
  format-font = 7
  ; Default
  hook-0 = echo ""
  ; Playing
  ; hook-1 = echo "Pause"
  ; NOTE: ipatch, the font defined about needs to support emoji gliffs
  hook-1 = echo "⏸"
  ; hook-1 = echo ""
  ; Paused
  ; hook-2 = echo "Play"
  hook-2 = echo "▶"
  click-left = "spotifyctl -q playpause"

[module/spotify]
  type = custom/ipc
  ; Default
  hook-0 = echo ""
  ; Playing/paused show song name and artist
  ; --max-title-length 10 --max-artist-length 10 --trunc '...'
  hook-1 = "spotifyctl -q status --format '%artist%:  %title%' --max-length 40"

[module/system-tray]
  type = internal/xembed
  exec = "/usr/bin/copyq"
  interval = 1


; vim:ft=dosini
